home *** CD-ROM | disk | FTP | other *** search
/ AI Game Programming Wisdom / AIGameProgrammingWisdom.iso / SourceCode / 06 General Architectures / 04 Christian / ieowner.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-16  |  1.3 KB  |  70 lines

  1.  
  2.  
  3. #ifndef _IEOWNER_H_
  4. #define _IEOWNER_H_
  5.  
  6. #include <string>
  7.  
  8. class IE;
  9.  
  10. //
  11. // Common interface for Inference Engine owner
  12. //
  13. class IEOwner
  14. {
  15.  
  16. public:
  17.     
  18.     virtual void makeBrain () = 0;
  19.  
  20.     void think     ();
  21.     
  22.     void         setName ( char * name ) { m_name = name; }
  23.     const char * getName () { return m_name.c_str(); }
  24.  
  25. protected:
  26.  
  27.     IE * m_brain;
  28.  
  29.     std::string m_name;
  30. };
  31.  
  32. #define IE_START(name)\
  33. void name::makeBrain ()\
  34. {\
  35.     char lineInfo[256];\
  36.     IEExec * exec;\
  37.     IE * ie = new IE;\
  38.     ie->start (#name, this);
  39.  
  40. #define GOAL(execClass)\
  41.     exec = new execClass;\
  42.     ie->makeGoal(exec); 
  43.  
  44. #define IF(execClass)\
  45.     exec = new execClass;\
  46.     sprintf ( lineInfo, "File:%s Line %d", __FILE__, __LINE__ );\
  47.     ie->makeRule(exec, lineInfo);
  48.  
  49. #define IF_DONE\
  50.     ie->makeDoneRule();
  51.  
  52. #define GOTO(goal)\
  53.     sprintf ( lineInfo, "File:%s Line %d", __FILE__, __LINE__ );\
  54.     ie->addRuleGoto(#goal, lineInfo);
  55.  
  56. #define GOSUB(goal)\
  57.     sprintf ( lineInfo, "File:%s Line %d", __FILE__, __LINE__ );\
  58.     ie->addRuleGosub(#goal, lineInfo);
  59.  
  60. #define RETURN\
  61.     sprintf ( lineInfo, "File:%s Line %d", __FILE__, __LINE__ );\
  62.     ie->addRuleReturn(lineInfo);
  63.  
  64. #define IE_END \
  65.     ie->end(); \
  66.     m_brain = ie; \
  67. }
  68.  
  69. #endif
  70.